A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices, referred to as routers, maintain routing information that describes routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming packet, the router examines information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing information.
Label-switching can be used to establish a fixed path from a head-end node (e.g., an ingress router) to a tail-end node (e.g., an egress router). The fixed path may be determined using known protocols. Once a path is determined, each router in the path may be configured (manually, or via some signaling mechanism) to forward packets to a peer (e.g., a “downstream” or “upstream” neighbor) router in the path. Routers in the path determine that a given set of packets (e.g., a flow) are to be sent over the fixed path, as opposed to being routed individually, based on unique labels added to the packets.
Another use of label-switching is to create “tunnels” through a network by encapsulating packets within other packets, e.g., by pre-pending one or more additional headers to the original packet. Once the original packet is encapsulated and enters a tunnel, the tunneled packet is forwarded to the tunnel endpoints independent of the encapsulated packet's original headers. Typically, only the ingress router looks at the headers of the original packets and determines which subset of packets get sent into which tunnels. Intermediate (also referred to as “transit”) routers use just the labels to forward the packet. This is useful in many applications, such as Virtual Private Networks (VPNs) or Layer 2 circuits. Such tunnels may be point-to-point, point-to-multipoint, multipoint-to-point, or multipoint-to-multipoint.
One type of tunnel is a label-switched path (LSP), which uses a technique by which labels are pre-pended to packets to control forwarding the packets along defined network paths. More specifically, the operation of forwarding a packet, based on address information, to a next hop can be thought of as two steps—partitioning the entire set of possible packets into a set of forwarding equivalence classes (FECs), and mapping each FEC to a next hop. As far as the forwarding decision is concerned, different packets which get mapped to the same FEC are indistinguishable. With multi-protocol label switching (MPLS), a particular packet is assigned to a particular FEC just once, as the packet enters the label-switched domain. The FEC to which the packet is assigned is encoded as a label, typically a short, fixed length value. Thus, at subsequent nodes, no further header analysis is conventionally employed—all subsequent forwarding over the label-switched domain is driven by the labels. Such FECs may be generalized such that particular ports, wavelengths, time slots, channels, etc. are used instead of, or encoded by, labels.
Unfortunately, forwarding information (such as an “OUT” label) of the forwarding component of label-switching routers (LSRs) may become corrupted. Consequently, data leaving such an LSR will be “black-holed” or mis-routed. When a next LSR in the LSP receives the packet with the wrong label, it will either discard it or transmit the packet along an LSP other than the desired LSP. Since the control plane of routers may use Internet protocol (IP) addresses to route its messages, the control plane will likely still be active and therefore might not recognize the error. Consequently, an ingress LSR may continue to transmit data through the non-functioning LSP.